"""FIELD

[
  [TITLE, FIELD, HAL-TYPE]
  [pg-TYPE, Constraint, NULL(-/True/False), Default]
  [Cerberus]
]

URI:
    GET-
    GET+(default)
"""

CONSTRAINTS = {
    'pk': 'primary_key=True',
    'uq': 'unique=True',
}

DEFAULTS = {
    '0x01': '\n{}server_default=text("uuid_generate_v1mc()")'.format(' '*12),
    '0x02': '\n{}server_default=text("current_timestamp")'.format(' '*12),
    '0x03': '\n{}server_default=text("current_date")'.format(' '*12),
    '0x04': '\n{}server_default=text("0")'.format(' '*12),
    '0x05': '\n{}server_default=text("1")'.format(' '*12),
}


user = {
    'title': '用户基本资料/users',
    'classname': 'User',
    'tablename': 'users',
    'columns': """
用户编号      userID        UUID      |  UUID       pk  -  0x01  |  readonly
头像          avatar        URL       |  TEXT       -   -  -     |  -
昵称          nickname      Text      |  TEXT       uq  -  -     |  -
性别          gender        Text      |  TEXT       -   -  -     |  -
出生日期      birthday      Date      |  DATE       -   -  -     |  -
地区          district      JSON      |  JSON       -   -  -     |  -
擅长位置      prefPosition  JSON      |  JSON       -   -  -     |  -
身高          height        Integer   |  INTEGER    -   -  -     |  -
体重          weight        Integer   |  INTEGER    -   -  -     |  -
惯用脚        prefFoot      Text      |  TEXT       -   -  -     |  -
个人宣言      declaration   Text      |  TEXT       -   -  -     |  -
真实姓名      realname      Text      |  TEXT       -   -  -     |  -
身份证号      IDCardNumber  Text      |  TEXT       -   -  -     |  -
身份证正反照  IDCardPhoto   JSON      |  JSON       -   -  -     |  -
手机号码      mobile        Text      |  TEXT       -   -  -     |  -
邮箱          email         Text      |  TEXT       -   -  -     |  -
密码          password      Text      |  TEXT       -   F  -     |  -
注册时间      createdTime   DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
状态          status        Integer   |  INTEGER    -   -  0x04  |  readonly
""",
    'docs': """
地区格式:
    {"Province":"北京市","Prefectural":"海淀区","County":"中关村"}
擅长位置:
    ["1", "2"]
""",
    'links': {
        'collection_uri': '/{CODE}',
        'collection_methods': (
            'POST',
        ),
        'document_uri': '/{CODE}/<userID>',
        'document_methods': (
            'GET',
            'PATCH',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': None,
            'kwargs': None,
            'required': ['mobile', 'nickname', 'password'],
            'unique': ['mobile', 'nickname'],
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['userID'],
            'kwargs': ['userid', 'nickname', 'mobile'],
        },
        {
            'method': 'update',
            'args': ['userID'],
            'kwargs': None,
            'unique': ['mobile', 'nickname'],
        },
    ],
}


club = {
    'title': '俱乐部基本资料/clubs',
    'classname': 'Club',
    'tablename': 'clubs',
    'columns': """
俱乐部编号  clubID       UUID      |  UUID       pk  -  0x01  |  readonly
名称        name         Text      |  TEXT       uq  F  -     |  -
队徽        logo         URL       |  TEXT       -   -  -     |  -
背景图      background   URL       |  TEXT       -   -  -     |  -
创立城市    district     JSON      |  JSON       -   -  -     |  -
创立日期    foundDate    Date      |  DATE       -   -  0x03  |  -
口号        slogan       Text      |  TEXT       -   -  -     |  -
简介        intro        Text      |  TEXT       -   -  -     |  -
创始人      founder      UUID      |  UUID       -   F  -     |  -
创建时间    createdTime  DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
状态        status       Integer   |  INTEGER    -   -  0x04  |  readonly
""",
    'links': {
        'collection_uri': '/{CODE}',
        'collection_methods': (
            'POST',
            'GET',
        ),
        'document_uri': '/{CODE}/<clubID>',
        'document_methods': (
            'GET',
            'PATCH',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': None,
            'kwargs': None,
            'required': ['name', 'founder'],
            'unique': ['name', 'founder'],
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['clubID'],
            'kwargs': ['clubid', 'name'],
        },
        {
            'method': 'update',
            'args': ['clubID'],
            'kwargs': None,
            'unique': ['name', 'founder'],
        },
    ],
}


honor = {
    'title': '俱乐部荣誉/honors',
    'classname': 'Honor',
    'tablename': 'honors',
    'columns': """
ID          id           UUID  | UUID  pk  -  0x01  |  readonly
名称        honor        Text  | TEXT  -   F  -     |  -
描述        intro        Text  | TEXT  -   -  -     |  -
获奖日期    dateCreated  Date  | DATE  -   -  -     |  -
俱乐部编号  clubID       UUID  | UUID  -   -  -     |  readonly
""",
    'links': {
        'collection_uri': '/clubs/<clubID>/{CODE}',
        'collection_methods': (
            'POST',
            'GET',
        ),
        'document_uri': '/clubs/<clubID>/{CODE}/<honorID>',
        'document_methods': (
            'GET',
            'PATCH',
            'DELETE',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': ['clubID'],
            'kwargs': None,
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['clubID', 'honorID:id'],
            'kwargs': ['clubid', 'honorID:id'],
        },
        {
            'method': 'update',
            'args': ['clubID', 'honorID:id'],
            'kwargs': None,
        },
    ],
}


members = {
    'title': '俱乐部成员/members',
    'classname': 'Member',
    'tablename': 'members',
    'columns': """
俱乐部编号  clubID       UUID      |  UUID       pk  -  -     |  readonly
用户编号    userID       UUID      |  UUID       pk  -  -     |  -
角色        role         Text      |  TEXT       -   -  -     |  -
加入时间    createdTime  DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
状态        status       Integer   |  INTEGER    -   -  0x04  |  readonly
""",
    'docs': """
角色/role
    创始人/founder
    管理员/manager
    成员/member
""",
    'links': {
        'collection_uri': '/clubs/<clubID>/{CODE}',
        'collection_methods': (
            'POST',
            'GET',
        ),
        'document_uri': '/clubs/<clubID>/{CODE}/<userID>',
        'document_methods': (
            'GET',
            'PATCH',
            'DELETE',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': ['clubID'],
            'kwargs': None,
            'required': ['userID'],
            'unique': ['userID'],
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['clubID', 'userID'],
            'kwargs': ['clubid', 'userid'],
        },
        {
            'method': 'update',
            'args': ['clubID', 'userID'],
            'kwargs': None,
            'unique': ['userID'],
        },
    ],
}


follower = {
    'title': '关注/followers',
    'classname': 'Follower',
    'tablename': 'followers',
    'columns': """
所有者    owner        UUID      |  UUID       pk  -  -     |  -
追随者    follower     UUID      |  UUID       pk  -  -     |  -
类型      type         Integer   |  SMALLINT   -   -  -     |  readonly
创建时间  createdTime  DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
""",
    'links': {
        'collection_uri': '/{CODE}',
        'collection_methods': (
            'POST',
            'GET',
            'GET-',  # NO Collection URI for GET
        ),
        'collection_uris': {
            'GET': [
                '/{CODE}/follower/<follower>  # 获取我所关注的',
                '/{CODE}/owner/<owner>  # 获取关注我的',
            ],
        },
        'document_uri': '/{CODE}/follower/<follower>/owner/<owner>',
        'document_methods': (
            'GET',
            'DELETE',
        ),
        'document_uris': {
            'GET': [
                #'/{CODE}/follower/<follower>/owner/<owner>',
                '/{CODE}/owner/<owner>/follower/<follower>  # 获取关注详情',
            ],
            'DELETE': [
                #'/{CODE}/follower/<follower>/owner/<owner>',
                '/{CODE}/owner/<owner>/follower/<follower>  # 取消关注',
            ],
        },
    },
    'methods': [
        {
            'method': 'create',
            'args': None,
            'kwargs': None,
            'required': ['owner', 'follower'],
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['follower', 'owner'],
            'kwargs': ['follower', 'owner'],
        },
    ],
}


league = {
    'title': '联赛基本数据/leagues',
    'classname': 'League',
    'tablename': 'leagues',
    'columns': """
联赛编号   leagueID     UUID      |  UUID       pk  -  0x01  |  readonly
名称       name         Text      |  TEXT       uq  F  -     |  -
地区       district     JSON      |  JSON       -   -  -     |  -
简介       intro        Text      |  TEXT       -   -  -     |  -
类型       type         Integer   |  INTEGER    -   -  -     |  -
创建时间   createdTime  DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
状态       status       Integer   |  INTEGER    -   -  0x04  |  readonly
""",
    'docs': """
类型/type
    联赛
    杯赛
""",
    'links': {
        'collection_uri': '/{CODE}',
        'collection_methods': (
            'POST',
            'GET',
        ),
        'document_uri': '/{CODE}/<leagueID>',
        'document_methods': (
            'GET',
            'PATCH',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': None,
            'kwargs': None,
            'required': ['name', 'type'],
            'unique': ['name'],
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['leagueID'],
            'kwargs': ['leagueid', 'type'],
        },
        {
            'method': 'update',
            'args': ['leagueID'],
            'kwargs': None,
            'unique': ['name'],
        },
    ],
}


team = {
    'title': '联赛球队/teams',
    'classname': 'Team',
    'tablename': 'teams',
    'columns': """
联赛编号    leagueID  UUID     |  UUID     pk  -  -     |  readonly
俱乐部编号  clubID    UUID     |  UUID     pk  -  -     |  -
组别        group     Text     |  TEXT     -   -  -     |  -
状态        status    Integer  |  INTEGER  -   -  0x04  |  readonly
""",
    'links': {
        'collection_uri': '/leagues/<leagueID>/{CODE}',
        'collection_methods': (
            'POST',
            'GET',
        ),
        'document_uri': '/leagues/<leagueID>/{CODE}/<clubID>',
        'document_methods': (
            'GET',
            'PATCH',
            'DELETE',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': ['leagueID'],
            'kwargs': None,
            'required': ['clubID'],
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['leagueID', 'clubID'],
            'kwargs': ['leagueid', 'clubid'],
        },
        {
            'method': 'update',
            'args': ['leagueID', 'clubID'],
            'kwargs': None,
        },
    ],
}


playerlist = {
    'title': '名单/playerlists',
    'classname': 'PlayerList',
    'tablename': 'playerlists',
    'columns': """
联赛编号    leagueID       UUID     |  UUID     pk  -  -     |  readonly
俱乐部编号  clubID         UUID     |  UUID     pk  -  -     |  readonly
用户编号    userID         UUID     |  UUID     pk  -  -     |  -
真实姓名    realname       Text     |  TEXT     -   -  -     |  -
出生日期    birthday       Date     |  DATE     -   -  -     |  -
球衣背号    clubNumber     Integer  |  INTEGER  -   -  -     |  -
位置        fieldPosition  Integer  |  INTEGER  -   -  -     |  -
""",
    'links': {
        'collection_uri': '/leagues/<leagueID>/{CODE}/<clubID>',
        'collection_methods': (
            'POST',
            'GET',
        ),
        'document_uri': '/leagues/<leagueID>/{CODE}/<clubID>/player/<userID>',
        'document_methods': (
            'GET',
            'PATCH',
            'DELETE',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': ['leagueID', 'clubID'],
            'kwargs': None,
            'required': ['userID'],
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['leagueID', 'clubID', 'userID'],
            'kwargs': ['leagueid', 'clubid', 'userid'],
        },
        {
            'method': 'update',
            'args': ['leagueID', 'clubID', 'userID'],
            'kwargs': None,
        },
    ],
}


match = {
    'title': '球赛基本数据/matches',
    'classname': 'Match',
    'tablename': 'matches',
    'columns': """
球赛编号   matchID      UUID      |  UUID       pk  -  0x01  |  readonly
联赛编号   leagueID     UUID      |  UUID       -   -  -     |  -
序号       session      Integer   |  INTEGER    -   -  -     |  -
开始时间   startedTime  DateTime  |  TIMESTAMP  -   F  -     |  -
报名截止   deadline     DateTime  |  TIMESTAMP  -   -  0x02  |  -
主队       homeTeam     UUID      |  UUID       -   F  -     |  -
客队       awayTeam     UUID      |  UUID       -   F  -     |  -
比分       score        JSON      |  JSON       -   -  -     |  -
MVP        MVP          UUID      |  UUID       -   -  -     |  -
场地       site         Text      |  TEXT       -   -  -     |  -
球衣要求   shirt        Text      |  TEXT       -   -  -     |  -
注意事项   notes        Text      |  TEXT       -   -  -     |  -
创建时间   createdTime  DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
类型       type         Integer   |  INTEGER    -   -  -     |  -
状态       status       Integer   |  INTEGER    -   -  0x04  |  readonly
""",
    'links': {
        'collection_uri': '/{CODE}',
        'collection_methods': (
            'POST',
            'GET',
            'GET-',  # NO Collection URI for GET
        ),
        'collection_uris': {
            'GET': [
                '/{CODE}/league/<leagueID>  # 获取该联赛的球赛即赛程',
                '/leagues/<leagueID>/schedules  # 获取该联赛的球赛即赛程',
                '/{CODE}/league/<leagueID>/club/<clubID>  # 获取该联赛中与该俱乐部参加的球赛',
                '/{CODE}/club/<clubID>  # 获取与该俱乐部参加的球赛',
            ],
        },
        'document_uri': '/{CODE}/<matchID>',
        'document_methods': (
            'GET',
            'PATCH',
            'DELETE',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['matchID'],
            'kwargs': ['leagueid', 'clubid'],
        },
        {
            'method': 'update',
            'args': ['matchID'],
            'kwargs': None,
        },
    ],
}


lineup = {
    'title': '出场阵容/lineups',
    'classname': 'LineUp',
    'tablename': 'lineups',
    'columns': """
球赛编号    matchID        UUID      |  UUID       pk  -  -     |  readonly
俱乐部编号  clubID         UUID      |  UUID       pk  -  -     |  -
用户编号    userID         UUID      |  UUID       pk  -  -     |  -
球衣背号    clubNumber     Integer   |  INTEGER    -   -  -     |  -
位置        fieldPosition  Integer   |  INTEGER    -   -  -     |  -
报名状态    applied        Integer   |  INTEGER    -   -  -     |  -
是否到场    present        Integer   |  INTEGER    -   -  -     |  -
是否首发    starting       Integer   |  INTEGER    -   -  -     |  -
是否上场    field          Integer   |  INTEGER    -   -  -     |  -
报名时间    createdTime    DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
""",
    'docs': """
报名状态/applied
    已报名
    已请假
""",
    'links': {
        'collection_uri': '/matches/<matchID>/{CODE}',
        'collection_methods': (
            'POST',
            'GET',
        ),
        'collection_uris': {
            'GET': [
                '/matches/<matchID>/{CODE}/club/<clubID>  # 获取该球赛中该俱乐部的出场球员名单',
            ],
        },
        'document_uri': '/matches/<matchID>/lineups/user/<userID>',
        'document_methods': (
            'GET',
            'PATCH',
            'DELETE',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': ['matchID'],
            'kwargs': None,
            'required': ['clubID', 'userID'],
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': ['matchID', 'userID'],
            'kwargs': ['matchid', 'userid', 'clubid'],
        },
        {
            'method': 'update',
            'args': ['matchID', 'userID'],
            'kwargs': None,
        },
    ],
}


event = {
    'title': '球赛事件/events',
    'classname': 'Event',
    'tablename': 'events',
    'columns': """
ID          id            UUID      |  UUID       pk  -  0x01  |  readonly
球赛编号    matchID       UUID      |  UUID       -   F  -     |  -
俱乐部编号  clubID        UUID      |  UUID       -   F  -     |  -
用户编号    userID        UUID      |  UUID       -   F  -     |  -
事件        event         Integer   |  INTEGER    -   F  -     |  -
时间        occurredTime  DateTime  |  TIMESTAMP  -   F  -     |  -
""",
    'docs': """
进球
    进球
    乌龙球
红黄牌
    红牌
    黄牌
其他
    警告
""",
    'links': {
        'collection_uri': '/matches/<matchID>/{CODE}',
        'collection_methods': (
            'POST',
            'GET',
        ),
        'collection_uris': {
            'GET': [
                '/matches/<matchID>/{CODE}/club/<clubID>',
                '/matches/<matchID>/{CODE}/user/<userID>',
            ],
        },
        'document_uri': '/{CODE}/<eventID>',
        'document_methods': (
            'GET',
            'PATCH',
            'DELETE',
        ),
    },
    'methods': [
        {
            'method': 'create',
            'args': ['clubID'],
            'kwargs': None,
            'required': ['userID', 'event'],
        },
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'fetchone',
            'args': ['eventID'],
            'kwargs': None,
        },
        {
            'method': 'fetchall',
            'args': None,
            'kwargs': ['matchid', 'clubid', 'userid'],
        },
        {
            'method': 'update',
            'args': ['eventID'],
            'kwargs': None,
        },
    ],
}


spiritborad = {
    'title': '球风记分牌/spiritborads',
    'classname': 'SpiritBorad',
    'tablename': 'spiritborads',
    'columns': """
ID          id           UUID      |  UUID       pk  -  0x01  |  readonly
联赛编号    leagueID     UUID      |  UUID       -   F  -     |  -
俱乐部编号  clubID       UUID      |  UUID       -   F  -     |  -
记分        point        Integer   |  INTEGER    -   F  -     |  -
类型        type         Integer   |  INTEGER    -   F  -     |  -
创建时间    createdTime  DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
""",
    'links': {
        'collection_uri': 'TODO',
        'collection_methods': (
            'POST',
            'GET',
        ),
        'document_uri': 'TODO',
        'document_methods': (
            'GET',
            'PATCH',
        ),
    },
    'methods': [],
}


table = {
    'title': '积分榜/tables',
    'classname': 'Table',
    'tablename': 'tables',
    'columns': """
联赛编号    leagueID     UUID      |  UUID       pk  -  -     |  -
俱乐部编号  clubID       UUID      |  UUID       pk  -  -     |  -
场数        played       Integer   |  INTEGER    -   -  -     |  -
积分        points       Integer   |  INTEGER    -   -  -     |  -
胜          wins         Integer   |  INTEGER    -   -  -     |  -
平          draws        Integer   |  INTEGER    -   -  -     |  -
负          losses       Integer   |  INTEGER    -   -  -     |  -
进球        goalScored   Integer   |  INTEGER    -   -  -     |  -
失球        goalAgainst  Integer   |  INTEGER    -   -  -     |  -
更新时间    lastUpdated  DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
""",
    'links': {
        'collection_uri': '/{CODE}/<leagueID>',
        'collection_methods': (
            'GET',
        ),
    },
    'methods': [
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': None,
            'kwargs': ['leagueid'],
        },
    ],
}


spirit = {
    'title': '球风榜/spirits',
    'classname': 'Spirit',
    'tablename': 'spirits',
    'columns': """
联赛编号    leagueID  UUID     |  UUID     pk  -  -     |  -
俱乐部编号  clubID    UUID     |  UUID     pk  -  -     |  -
积分        points    Integer  |  INTEGER  -   -  -     |  -
红牌        proj01    Integer  |  INTEGER  -   -  -     |  -
黄牌        proj02    Integer  |  INTEGER  -   -  -     |  -
警告        proj03    Integer  |  INTEGER  -   -  -     |  -
列队        proj04    Integer  |  INTEGER  -   -  -     |  -
队服        proj05    Integer  |  INTEGER  -   -  -     |  -
鼓掌        proj06    Integer  |  INTEGER  -   -  -     |  -
复盘        proj07    Integer  |  INTEGER  -   -  -     |  -
海报        proj08    Integer  |  INTEGER  -   -  -     |  -
投票        proj09    Integer  |  INTEGER  -   -  -     |  -
""",
    'links': {
        'collection_uri': '/{CODE}/<leagueID>',
        'collection_methods': (
            'GET',
        ),
    },
    'methods': [
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': None,
            'kwargs': ['leagueid'],
        },
    ],
}


rank = {
    'title': '排行榜/ranks',
    'classname': 'Rank',
    'tablename': 'ranks',
    'columns': """
ID          id           UUID      |  UUID       pk  -  0x01  |  readonly
联赛编号    leagueID     UUID      |  UUID       -   -  -     |  -
俱乐部编号  clubID       UUID      |  UUID       -   -  -     |  -
用户编号    userID       UUID      |  UUID       -   -  -     |  -
分值        score        Integer   |  INTEGER    -   -  -     |  -
附加数据    ext          Text      |  TEXT       -   -  -     |  readonly
类型        type         Integer   |  INTEGER    -   -  -     |  -
更新时间    lastUpdated  DateTime  |  TIMESTAMP  -   -  0x02  |  readonly
""",
    'docs': """
类型/type
    射手
    助攻
    红牌
    黄牌
""",
    'links': {
        'collection_uri': '/{CODE}/league/<leagueID>/{TYPE}  # TYPE: shooters/assists/rycards',
        'collection_methods': (
            'GET',
        ),
        'collection_uris': {
            'GET': [
                '/{CODE}/league/<leagueID>/shooters',
                '/{CODE}/league/<leagueID>/assists',
                '/{CODE}/league/<leagueID>/rycards',
            ],
        },
    },
    'methods': [
        {
            'method': 'read',
            'args': None,
            'kwargs': None,
        },
        {
            'method': 'query',
            'args': None,
            'kwargs': ['leagueid'],
        },
    ],
}


district = {
    'title': '行政区划/district',
    'classname': 'District',
    'tablename': 'districts',
    'columns': """
地区编号      id           UUID      |  UUID       pk  -  0x01  |  readonly
上级地区编号  pid          UUID      |  UUID       -   -  -     |  readonly
地区名称      district     Text      |  TEXT       -   -  -     |  readonly
行政区划代码  code         Text      |  TEXT       -   -  -     |  readonly
状态          status       Integer   |  INTEGER    -   -  0x04  |  readonly
""",
    'links': {
        'collection_uri': '/{CODE}/<districtID>',
        'collection_methods': (
            'GET',
        ),
    },
    'methods': [
        {
            'method': 'read',
            'args': ['ID'],
            'kwargs': ['id'],
        },
    ],
}


items = [
    user,
    club,
    honor,
    members,
    follower,
    league,
    team,
    playerlist,
    match,
    lineup,
    event,
    spiritborad,
    table,
    spirit,
    rank,
    district,
]


if __name__ == '__main__':
    for item in items:
        print(item['columns'])
